diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 698fbd2..48ef376 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -2608,7 +2608,7 @@
    the Date Helper.
 -  Added :doc:`$query->free_result() <./database/results>` to database
    class.
--  Added :doc:`$query->list_fields() <./database/fields>` function to
+-  Added :doc:`$query->list_fields() <./database/metadata>` function to
    database class
 -  Added :doc:`$this->db->platform() <./database/helpers>` function
 -  Added new :doc:`File Helper <./helpers/file_helper>`:
diff --git a/user_guide_src/source/database/query_builder.rst b/user_guide_src/source/database/query_builder.rst
index 030599e..b06396e 100644
--- a/user_guide_src/source/database/query_builder.rst
+++ b/user_guide_src/source/database/query_builder.rst
@@ -2,8 +2,8 @@
 Query Builder Class
 ###################
 
-CodeIgniter gives you access to a Query Builder class. This pattern 
-allows information to be retrieved, inserted, and updated in your 
+CodeIgniter gives you access to a Query Builder class. This pattern
+allows information to be retrieved, inserted, and updated in your
 database with minimal scripting. In some cases only one or two lines
 of code are necessary to perform a database action.
 CodeIgniter does not require that each database table be its own class
@@ -110,10 +110,10 @@
 
 .. note:: If you are selecting all (\*) from a table you do not need to
 	use this function. When omitted, CodeIgniter assumes that you wish
-	to select all fields and automatically adds 'SELECT *'.
+	to select all fields and automatically adds 'SELECT \*'.
 
 ``$this->db->select()`` accepts an optional second parameter. If you set it
-to FALSE, CodeIgniter will not try to protect your field or table names.  
+to FALSE, CodeIgniter will not try to protect your field or table names.
 This is useful if you need a compound select statement where automatic
 escaping of fields may break them.
 
@@ -1097,7 +1097,7 @@
 		:returns:	Number of rows in the query result
 		:rtype:	int
 
-		Generates a platform-specific query string that counts 
+		Generates a platform-specific query string that counts
 		all records returned by an Query Builder query.
 
 	.. method:: get([$table = ''[, $limit = NULL[, $offset = NULL]]])
@@ -1540,4 +1540,4 @@
 		:returns:	The compiled SQL statement as a string
 		:rtype:	string
 
-		Compiles a DELETE statement and returns it as a string.
\ No newline at end of file
+		Compiles a DELETE statement and returns it as a string.
diff --git a/user_guide_src/source/libraries/input.rst b/user_guide_src/source/libraries/input.rst
index 1123471..695a650 100644
--- a/user_guide_src/source/libraries/input.rst
+++ b/user_guide_src/source/libraries/input.rst
@@ -136,15 +136,17 @@
 
 			$this->input->post(NULL, TRUE); // returns all POST items with XSS filter
 			$this->input->post(NULL, FALSE); // returns all POST items without XSS filter
-		
+
 		To return an array of multiple POST parameters, pass all the required keys
 		as an array.
 		::
+
 			$this->input->post(array('field1', 'field2'));
-		
+
 		Same rule applied here, to retrive the parameters with XSS filtering enabled, set the
 		second parameter to boolean TRUE.
 		::
+
 			$this->input->post(array('field1', 'field2'), TRUE);
 
 	.. method:: get([$index = NULL[, $xss_clean = NULL]])
@@ -167,15 +169,17 @@
 
 			$this->input->get(NULL, TRUE); // returns all GET items with XSS filter
 			$this->input->get(NULL, FALSE); // returns all GET items without XSS filtering
-		
+
 		To return an array of multiple GET parameters, pass all the required keys
 		as an array.
 		::
+
 			$this->input->get(array('field1', 'field2'));
-		
+
 		Same rule applied here, to retrive the parameters with XSS filtering enabled, set the
 		second parameter to boolean TRUE.
 		::
+
 			$this->input->get(array('field1', 'field2'), TRUE);
 
 	.. method:: post_get($index[, $xss_clean = NULL])
@@ -218,10 +222,11 @@
 
 			$this->input->cookie('some_cookie');
 			$this->input->cookie('some_cookie, TRUE); // with XSS filter
-		
+
 		To return an array of multiple cookie values, pass all the required keys
 		as an array.
 		::
+
 			$this->input->cookie(array('some_cookie', 'some_cookie2'));
 
 	.. method:: server($index[, $xss_clean = NULL])
@@ -239,7 +244,8 @@
 		To return an array of multiple ``$_SERVER`` values, pass all the required keys
 		as an array.
 		::
-			$this->input->server(array('SERVER_PROTOCOL', 'REQUEST_URI'));		
+
+			$this->input->server(array('SERVER_PROTOCOL', 'REQUEST_URI'));
 
 	.. method:: input_stream([$index = NULL[, $xss_clean = NULL]])
 
@@ -437,4 +443,4 @@
 
 			echo $this->input->method(TRUE); // Outputs: POST
 			echo $this->input->method(FALSE); // Outputs: post
-			echo $this->input->method(); // Outputs: post
\ No newline at end of file
+			echo $this->input->method(); // Outputs: post
diff --git a/user_guide_src/source/libraries/zip.rst b/user_guide_src/source/libraries/zip.rst
index 0f25575..b509236 100644
--- a/user_guide_src/source/libraries/zip.rst
+++ b/user_guide_src/source/libraries/zip.rst
@@ -43,7 +43,7 @@
 	$this->zip->add_data($name, $data);
 
 	// Write the zip file to a folder on your server. Name it "my_backup.zip"
-	$this->zip->archive('/path/to/directory/my_backup.zip'); 
+	$this->zip->archive('/path/to/directory/my_backup.zip');
 
 	// Download the file to your desktop. Name it "my_backup.zip"
 	$this->zip->download('my_backup.zip');
@@ -80,7 +80,7 @@
 			$name = 'mydata2.txt';
 			$data = 'Another Data String!';
 			$this->zip->add_data($name, $data);
-			
+
 		When adding multiple files, the first parameter must contain *file => contents* pairs
 		and the second parameter is ignored::
 
@@ -124,7 +124,7 @@
 
 			$path = '/path/to/photo.jpg';
 
-			$this->zip->read_file($path); 
+			$this->zip->read_file($path);
 
 			// Download the file to your desktop. Name it "my_backup.zip"
 			$this->zip->download('my_backup.zip');
@@ -134,7 +134,7 @@
 
 			$path = '/path/to/photo.jpg';
 
-			$this->zip->read_file($path, TRUE); 
+			$this->zip->read_file($path, TRUE);
 
 			// Download the file to your desktop. Name it "my_backup.zip"
 			$this->zip->download('my_backup.zip');
@@ -165,14 +165,14 @@
 
 			$path = '/path/to/your/directory/';
 
-			$this->zip->read_dir($path); 
+			$this->zip->read_dir($path);
 
 			// Download the file to your desktop. Name it "my_backup.zip"
 			$this->zip->download('my_backup.zip');
 
 		By default the Zip archive will place all directories listed in the first parameter
 		inside the zip. If you want the tree preceding the target directory to be ignored,
-		 you can pass FALSE (boolean) in the second parameter. Example::
+		you can pass FALSE (boolean) in the second parameter. Example::
 
 			$path = '/path/to/your/directory/';
 
@@ -236,9 +236,9 @@
 			$this->zip->add_data($name, $data);
 			$zip_file = $this->zip->get_zip();
 
-			$this->zip->clear_data(); 
+			$this->zip->clear_data();
 
 			$name = 'photo.jpg';
 			$this->zip->read_file("/path/to/photo.jpg"); // Read the file's contents
 
-			$this->zip->download('myphotos.zip');
\ No newline at end of file
+			$this->zip->download('myphotos.zip');
